<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>立即执行函数表达式</title>
</head>
<body>
<script>
    //使用IIFE（Immediately-invoked function expression）
    //立即执行函数表达式
    console.warn("ES5")
    for (var i = 0; i < 10; i++) {
        (function () {
            setTimeout(function () {
                console.log(i);
            }, 100 * i)
        })(i)//在let出现之前，我们只能使用IFFE
    }
    console.warn("ES6")
    //es6之后我们可以使用let关键字来替代var，解决这个问题
    for (let j = 0; j < 10; j++) {
        setTimeout(function (){
            console.log(j)
        },100*j)
    }
</script>
</body>
</html>